package br.sgpweb.beans;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.sgpweb.dao.ServidoresDAO;
import br.sgpweb.model.*;

@ManagedBean(name="beanSessao")
@SessionScoped
public class SessaoBean implements Serializable {

	private static final long serialVersionUID = 1L;
	private Servidores servidor;
	private ServidoresDAO dao;
	
	private boolean autorizado = false;
	private boolean menuPrincipal = false;
	private boolean incluirAbastecimento = false;
	private boolean solicitarManutencao = false;
	private boolean consultarPostos = false;
	private boolean consultarAbastecimentos = false;
	private boolean consultarVeiculos = false;

	
	public SessaoBean() {
		this.servidor = new Servidores();
		this.dao = new ServidoresDAO();
		this.autorizado = false;
		this.menuPrincipal = false;
		this.incluirAbastecimento = false;
		this.solicitarManutencao = false;
		this.consultarPostos = false;
		this.consultarAbastecimentos = false;
		this.consultarVeiculos = false;
	}

	
	public Servidores getServidor() {
		return servidor;
	}

	public void setServidor(Servidores servidor) {
		this.servidor = servidor;
	}

	public ServidoresDAO getDao() {
		return dao;
	}

	public void setDao(ServidoresDAO dao) {
		this.dao = dao;
	}

	public boolean isAutorizado() {
		return autorizado;
	}

	public void setAutorizado(boolean autorizado) {
		this.autorizado = autorizado;
	}

	public boolean isMenuPrincipal() {
		return menuPrincipal;
	}

	public void setMenuPrincipal(boolean menuPrincipal) {
		this.menuPrincipal = menuPrincipal;
	}

	public boolean isIncluirAbastecimento() {
		return incluirAbastecimento;
	}

	public void setIncluirAbastecimento(boolean incluirAbastecimento) {
		this.incluirAbastecimento = incluirAbastecimento;
	}

	public boolean isSolicitarManutencao() {
		return solicitarManutencao;
	}

	public void setSolicitarManutencao(boolean solicitarManutencao) {
		this.solicitarManutencao = solicitarManutencao;
	}

	public boolean isConsultarPostos() {
		return consultarPostos;
	}

	public void setConsultarPostos(boolean consultarPostos) {
		this.consultarPostos = consultarPostos;
	}

	public boolean isConsultarAbastecimentos() {
		return consultarAbastecimentos;
	}

	public void setConsultarAbastecimentos(boolean consultarAbastecimentos) {
		this.consultarAbastecimentos = consultarAbastecimentos;
	}

	public boolean isConsultarVeiculos() {
		return consultarVeiculos;
	}

	public void setConsultarVeiculos(boolean consultarVeiculos) {
		this.consultarVeiculos = consultarVeiculos;
	}

	/*
	 * Funcionalidades do sistema
	 */
	
	public String login() {
		String retorno = "negado";
		
		try 
		{
			this.servidor = dao.login(this.servidor.getLogin(), this.servidor.getSenha());
			
			if (this.servidor.getMatricula() != "")
			{				
				this.autorizado = true;
				this.menuPrincipal = true;
				this.incluirAbastecimento = true;
				this.solicitarManutencao = true;
				this.consultarAbastecimentos = true;
				this.consultarPostos = true;
				this.consultarVeiculos = true;
			}
			else
			{
				this.Encerrar_Sessao();	
			}
			
		} catch (Exception e) {
			System.out.println("Falha no Bean: " + e.getMessage());

		}
		
		return retorno;
	}
	
	public String Acessar_MenuPrincipal() {
		System.out.println("Acessou o menu");
		
		String retorno = "/index.xhtml";

		if (menuPrincipal) {
			retorno = "/menu.xhtml";
		}

		return retorno;
	}
	
	public String Encerrar_Sessao() {

		String retorno = "/index.xhtml";

		autorizado = false;
		menuPrincipal = false;
		incluirAbastecimento = false;
		solicitarManutencao = false;
		consultarAbastecimentos = false;
		consultarPostos = false;
		consultarVeiculos = false;
			
		return retorno;
	}

	public String Acessar_IncluirAbastecimentos() {

		String retorno = "/index.xhtml";

		if (incluirAbastecimento) {
			retorno = "/views/abastecimentos/incluir.xhtml";
		}

		return retorno;
	}

	public String Acessar_SolicitarManutencao() {

		String retorno = "/index.xhtml";

		if (solicitarManutencao) {
			retorno = "/views/manutencoes/incluir.xhtml";
		}

		return retorno;
	}
	
	public String Acessar_ConsultarPostos() {

		String retorno = "/index.xhtml";

		if (consultarPostos) {
			retorno = "/views/postos/listar.xhtml";
		}

		return retorno;
	}
	
	public String Acessar_ConsultarVeiculos() {

		String retorno = "/index.xhtml";

		if (consultarVeiculos) {
			retorno = "/views/veiculos/listar.xhtml";
		}

		return retorno;
	}
	
	public String Acessar_ConsultarAbastecimentos() {

		String retorno = "/index.xhtml";

		if (consultarAbastecimentos) {
			retorno = "/views/abastecimentos/listar.xhtml";
		}

		return retorno;
	}
	
	public String Acessar_ConsultarManutencoes() {

		String retorno = "/index.xhtml";

		if (solicitarManutencao) {
			retorno = "/views/manutencoes/listar.xhtml";
		}

		return retorno;
	}
}
